Codeforces 1674 E. Breaking the Wall
全部标签CodeforcesRound865(Div.2)A.IanVisitsMaryvoidsolve(){intx=read(),y=read();if(__gcd(y,x)!=1){cout2endl;cout1""1endl;cout""endl;}else{cout1"\n";cout"""\n";}//puts(ans>0?"YES":"NO");//puts(ans>0?"Yes":"No");} B.GridReconstruction自己写了挺长一串的这是赛后学习jiangly的代码voidsolve(){intn=read();for(inti=0;i2;i++){for(int
CodeforcesRound865(Div.2)A.IanVisitsMaryvoidsolve(){intx=read(),y=read();if(__gcd(y,x)!=1){cout2endl;cout1""1endl;cout""endl;}else{cout1"\n";cout"""\n";}//puts(ans>0?"YES":"NO");//puts(ans>0?"Yes":"No");} B.GridReconstruction自己写了挺长一串的这是赛后学习jiangly的代码voidsolve(){intn=read();for(inti=0;i2;i++){for(int
CF#821Div2AConsecutiveSum题目: 选择\(i\)和\(j\),如果\(j=i+xk(x=R)\),可以交换\(i,j\)。任意选择一段长度为k的相加。思路: 题目等价于在下标\(mod\)k相同的数中选一个最大的。简单模拟。可以用vis标记或者优先队列。实现: 不值一提。voidsolve(){cin>>n>>k;priority_queueq[105];for(inti=0;i>x;q[(i+1)%k].push(x);}llres=0;for(inti=0;iBRuleofLeague(分类讨论)题目: 有n个人,他们之间会进行n-1场比赛。将人分成两部分
CF#821Div2AConsecutiveSum题目: 选择\(i\)和\(j\),如果\(j=i+xk(x=R)\),可以交换\(i,j\)。任意选择一段长度为k的相加。思路: 题目等价于在下标\(mod\)k相同的数中选一个最大的。简单模拟。可以用vis标记或者优先队列。实现: 不值一提。voidsolve(){cin>>n>>k;priority_queueq[105];for(inti=0;i>x;q[(i+1)%k].push(x);}llres=0;for(inti=0;iBRuleofLeague(分类讨论)题目: 有n个人,他们之间会进行n-1场比赛。将人分成两部分
题意给你n个非负整数的数列a,你可以进行K次操作,每次操作可以将任意位置的数数更改成任意一个非负整数,求操作以后,DIFF(a)-MEX(a)的最小值;DIFF代表数组中数的种类。MEX代表数组中未出现的最小自然数。提示1.显然DIFF(a)-MEX(a)最小,DIFF(a)越小越好,MEX(a)越大越好2.假如DIFF降低,同时MEX提升,这样操作是不亏的,因此我们只需要提升MEX即可,贪心的的构造0-x,x为k次修改,能构建到mex的最大的数列a状态。3.在原始a中,0-x中空缺的值即为需要填充个数的值,我们只需要贪心,先填入出现次数少的>x的值,以降低它的DIFF,即MEX固定了,再降低
题意给一个n个点的无向图,其中有一个隐藏点X,可以进行一组询问S来确定S是n个节点中的哪个点。S包括k个询问节点。询问返回的值也为k个值,每个值为X点到每个询问节点的最短路距离,求k最小为多少。提示1.对于k个节点来说,最优的结构肯定是选择所有的叶子节点2.对于一个节点来说,假如它连了m条链(包括单个叶子节点),可以只标记m-1条链的叶子节点即可3.满足1,2条件以后,可以尝试再去询问点,发现均无法全部检测到,原因是:假如去点m-2条链,剩下的两条链,相同深度部分对于其他的节点来说是无法判断的,他们是等价的方法可以树形DP,一下,或者从每个叶子节点开始搜索一下,这里主要将树形DP的方法:dp[
题意给你n个非负整数的数列a,你可以进行K次操作,每次操作可以将任意位置的数数更改成任意一个非负整数,求操作以后,DIFF(a)-MEX(a)的最小值;DIFF代表数组中数的种类。MEX代表数组中未出现的最小自然数。提示1.显然DIFF(a)-MEX(a)最小,DIFF(a)越小越好,MEX(a)越大越好2.假如DIFF降低,同时MEX提升,这样操作是不亏的,因此我们只需要提升MEX即可,贪心的的构造0-x,x为k次修改,能构建到mex的最大的数列a状态。3.在原始a中,0-x中空缺的值即为需要填充个数的值,我们只需要贪心,先填入出现次数少的>x的值,以降低它的DIFF,即MEX固定了,再降低
题意给一个n个点的无向图,其中有一个隐藏点X,可以进行一组询问S来确定S是n个节点中的哪个点。S包括k个询问节点。询问返回的值也为k个值,每个值为X点到每个询问节点的最短路距离,求k最小为多少。提示1.对于k个节点来说,最优的结构肯定是选择所有的叶子节点2.对于一个节点来说,假如它连了m条链(包括单个叶子节点),可以只标记m-1条链的叶子节点即可3.满足1,2条件以后,可以尝试再去询问点,发现均无法全部检测到,原因是:假如去点m-2条链,剩下的两条链,相同深度部分对于其他的节点来说是无法判断的,他们是等价的方法可以树形DP,一下,或者从每个叶子节点开始搜索一下,这里主要将树形DP的方法:dp[
题意给n个数的数列a[n],可以进行任意次操作,每次选取一个位置i,a[i]-=2,a[i-1]-=1,a[i+1]-=1,问最少几次操作可以让任意两个值提示需要进行分类讨论,分成三种情况讨论1.两个数是相邻的,那么则需要解方程,x,y代表两点分别进行多少次2.两个数间隔一位的话,那么需要解方程,x,y代表两点分别进行多少次,z代表中间点需要多少次3.任意两点,直接排序取两个最小值ceil(x/2)即可这道题比较简单,看完题目以后解题思路就比较明显了,比赛的提交很多人被hack了,估计是一些边界值考虑出错导致的,代码实现也比较简单代码#includeusingnamespacestd;inta
题意给n个数的数列a[n],可以进行任意次操作,每次选取一个位置i,a[i]-=2,a[i-1]-=1,a[i+1]-=1,问最少几次操作可以让任意两个值提示需要进行分类讨论,分成三种情况讨论1.两个数是相邻的,那么则需要解方程,x,y代表两点分别进行多少次2.两个数间隔一位的话,那么需要解方程,x,y代表两点分别进行多少次,z代表中间点需要多少次3.任意两点,直接排序取两个最小值ceil(x/2)即可这道题比较简单,看完题目以后解题思路就比较明显了,比赛的提交很多人被hack了,估计是一些边界值考虑出错导致的,代码实现也比较简单代码#includeusingnamespacestd;inta